python课后答案第七周 |
您所在的位置:网站首页 › mooc python语言程序设计东北大学答案 › python课后答案第七周 |
练习1:文件行数 描述 打印输出附件文件的有效行数,注意:空行不计算为有效行数。 输入输出示例 这是仅给出输出格式样例,不是结果。 输入 输出 示例 1 共100行 我的代码 #week7_1.py #文件的行数 f=open("latex.log") lines=0 for line in f: if len(line)==1: #过滤掉空行,空行只有一换行符 continue lines +=1 print("共{}行".format(lines)) 参考代码 f = open("latex.log") s = 0 for line in f: line = line.strip('\n') #将每一行字符串的首尾的换行符去掉 if len(line) == 0: #过滤掉空行 continue s += 1 print("共{}行".format(s)) 练习2:文件字符分布 描述 统计附件文件的小写字母a-z的字符分布,即出现a-z字符的数量,并输出结果。 同时请输出文件一共包含的字符数量。 注意输出格式,各元素之间用英文逗号(,)分隔。 答案可能包含a-z共26个字符的分布,如果某个字符没有出现,则不显示,输出顺序a-z顺序。 输入输出示例 仅格式示例,非最终答案。 输入 输出 示例 1 共999字符,a:11,b:22,c:33,d:44,e:55 我的代码 #week7_2.py #统计文件的字符数及每种字符的个数 f=open("latex.log") chrs=0 counts={} for i in range(26): #生成字典counts的a-z的索引,值皆为0 counts[chr(ord('a')+i)]=0 #要掌握这种批量处理字符的技巧 for line in f: for c in line: counts[c] = counts.get(c,0)+1 #字典的get方法很重要! chrs +=1 #累加每行的字符数 print("共{}字符".format(chrs),end="") #打印总字符数后不换行 for i in range(26): if counts[chr(ord('a')+i)] !=0: #过滤掉值为零的键 print(",{}:{}".format(chr(ord('a')+i),counts[chr(ord('a')+i)]),end="") 参考代码 f = open("latex.log") cc = 0 d = {} for i in range(26): d[chr(ord('a')+i)] = 0 for line in f: for c in line: d[c] = d.get(c, 0) + 1 cc += 1 print("共{}字符".format(cc), end="") for i in range(26): if d[chr(ord('a')+i)] != 0: print(",{}:{}".format(chr(ord('a')+i), d[chr(ord('a')+i)]), end="") 说明:这题比较难,我是参考答案完成的 练习3:文件独特行数 描述 统计附件文件中与其他任何其他行都不同的行的数量,即独特行的数量。 输入输出示例 此处仅示例输出格式。 输入 输出 示例 1 共99独特行 我的代码 #week7_3.py #统计文件独特行的行数 f=open("latex.log") line=f.readlines() #安行读入文件的所有行,每行为列表的一个元素(字符串) s=set(line) #列表转换成集合,去重,注意这时的行数不是独特行!每种重复N次的行都计为1行 for i in s: line.remove(i) #列表中去掉不重复的行,剩下的是原列表中有重复的行 t=set(line) #有重复的行集合 print("共{}独特行".format(len(s)-len(t))) 说明 :觉得很难,参考参考答案完成的 练习4:CSV格式列变换 描述 附件是一个CSV文件,请将每行按照列逆序排列后输出,不改变各元素格式(如周围空格布局等)。 输入输出示例 这是一个格式示例,不是正确结果。 输入 输出 示例 1 (以下是文件内容) 1,2,3,4 a,b,c,d 4,3,2,1 d,c,b,a 我的代码 #week7_4.py #CSV文件的每一行倒序排,不改变空格等信息 f = open("data.csv") ls = [] for line in f: line =line.replace("\n","") #去掉每行末的换行符 ls.append(line.split(",")) #空列表中加入字符串列表,最后得一二维列表 f.close() for row in ls: print(",".join(row[::-1])) #要掌握.join()方法的使用 练习5:CSV格式数据清洗 描述 附件是一个CSV文件,其中每个数据前后存在空格,请对其进行清洗,要求如下: (1)去掉每个数据前后空格,即数据之间仅用逗号(,)分割; (2)清洗后打印输出。 输入输出示例 这里是一个格式示例,不是正确结果。 输入 输出 示例 1 (在文件中) 1, 2, 3, 4, 5 'a', 'b' , 'c' , 'd','e' 1,2,3,4,5 'a','b','c','d','e' 我的代码 #week7_5V1.py #CSV文件格式清洗 f = open("data.csv") for line in f: line =line.replace(" ","") line = line.strip("\n") #把每行(一字符串),去掉字符串的首尾的换行符 print(line) f.close() 原文 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |